Think Like a Programmer: An Introduction to Creative Problem Solving

Think Like a Programmer: An Introduction to Creative Problem Solving

  • Downloads:3392
  • Type:Epub+TxT+PDF+Mobi
  • Create Date:2021-09-22 08:53:18
  • Update Date:2025-09-06
  • Status:finish
  • Author:V. Anton Spraul
  • ISBN:1593274246
  • Environment:PC/Android/iPhone/iPad/Kindle

Summary

Rewire your brain

Examples in this book are written in C++, but will improve your ability to think like a programmer in any language。

The real challenge of programming isn't learning a language's syntax—it's learning to creatively solve problems so you can build something great。 In this one-of-a-kind text, author V。 Anton Spraul breaks down the ways that programmers solve problems and teaches you what other introductory books often ignore: how to Think Like a Programmer。 Each chapter tackles a single programming concept, like classes, pointers, and recursion, and open-ended exercises throughout challenge you to apply your knowledge。 You'll also learn how to:


Split problems into discrete components to make them easier to solve Make the most of code reuse with functions, classes, and libraries Pick the perfect data structure for a particular job Master more advanced programming tools like recursion and dynamic memory Organize your thoughts and develop strategies to tackle particular types of problems Although the book's examples are written in C++, the creative problem-solving concepts they illustrate go beyond any particular language; in fact, they often reach outside the realm of computer science。 As the most skillful programmers know, writing great code is a creative art—and the first step in creating your masterpiece is learning to Think Like a Programmer

Download

Reviews

Ali

It was a good book about extending your problem solving skills and thoughts。

Yogi Saputro

I taught modern web development for people who want to switch career。 This book was a big help in providing analogy and paradigm。I pretty much consider C++ part useless。 But for me, even a third of this book is worth 5 stars。

Francis Anthony Carmel

This review has been hidden because it contains spoilers。 To view it, click here。 I recommend this book for both new learners like me and veterans alike。Although in the second half of the book majority of the problems involve object-oriented programming and other important elements it discusses the most important part of any scientific project: problem-solving skills。There are also exercises at the end of each chapter that would test out the reader's capability。 I recommend this book for both new learners like me and veterans alike。Although in the second half of the book majority of the problems involve object-oriented programming and other important elements it discusses the most important part of any scientific project: problem-solving skills。There are also exercises at the end of each chapter that would test out the reader's capability。 。。。more

The Lost Dreamer

As a person who makes her living writing code, I've found this book rather disappointing。 I read it hoping to extract some lessons to improve my code writing and looking for fresh ideas and points of view to enrich my workflow。 What I found was a patronizing piece written for first-year college students。 The author is so full of himself that extracting any lesson is quite difficult, for his attitude towards the reader is constantly that of a pissed teacher。 I'm a grown-up and I find this way of As a person who makes her living writing code, I've found this book rather disappointing。 I read it hoping to extract some lessons to improve my code writing and looking for fresh ideas and points of view to enrich my workflow。 What I found was a patronizing piece written for first-year college students。 The author is so full of himself that extracting any lesson is quite difficult, for his attitude towards the reader is constantly that of a pissed teacher。 I'm a grown-up and I find this way of communicating ineffective。About the contents of the book, probably I would have enjoyed it some more if I had chosen the Python edition。 Nevertheless, I have to admit that this book is a pretty good way to get in touch with C++ programming if you're not familiar with it, which is my case。 The book proposes a good deal of problems that don't seem totally real-world-worthy, but clearly have some interesting lessons for anyone who has to deal with Objects in their programming life。 The problems are too academic and I didn't feel that they would help me to be better at my job, but if one day I really needed to learn C++, probably these problems would be my starting point。 They are good programmer-workout。In the end, unfortunately, reading this book took more effort than it brought satisfaction。 Some parts are quite repetitive and the language even feels childish。 Clearly, this is not the kind of book that you need to read if you're already out there writing code。 But probably this is not a bad text-book for those beggining their path in Computer Science。 。。。more

Septian Nugraha

Enjoy my first read, will definitely re read itI found it funny because this book used C++ programming language for all its examples, which I'm not really familiar with。 Now that I finished this book, I'm grateful that I didn't just learn new language, but also much larger concepts Enjoy my first read, will definitely re read itI found it funny because this book used C++ programming language for all its examples, which I'm not really familiar with。 Now that I finished this book, I'm grateful that I didn't just learn new language, but also much larger concepts 。。。more

Armando Leon

Amazing and Thought Provoking for PerfectionistsI’ve been coding for 6 years。 I always struggle at solving problems, or even getting projects started。 I always strive for perfection, but this book highlights that really you don’t need to be perfect or an expert。 You can come up with a solution and move forward, then learn new techniques and apply it to your previous solutions or projects。 Programming is a work in progress。 And you get better as you continuously challenge yourself and apply what Amazing and Thought Provoking for PerfectionistsI’ve been coding for 6 years。 I always struggle at solving problems, or even getting projects started。 I always strive for perfection, but this book highlights that really you don’t need to be perfect or an expert。 You can come up with a solution and move forward, then learn new techniques and apply it to your previous solutions or projects。 Programming is a work in progress。 And you get better as you continuously challenge yourself and apply what you learn。 。。。more

Midori

Not a programmer but probably because I'm intuitive so I feel like the book provides a very good framework to tackle problems by starting to think like a programmer。 I find the provided framework very similar to the problem-solving framework in any other professional。 The author chose C++ as the language to write all the sample problems and solutions in the book。 Not a programmer but probably because I'm intuitive so I feel like the book provides a very good framework to tackle problems by starting to think like a programmer。 I find the provided framework very similar to the problem-solving framework in any other professional。 The author chose C++ as the language to write all the sample problems and solutions in the book。 。。。more

Xavier Fornés Arrabal

First few chapters started promisingly but the 2/3 rest of the book did not fulfil my expectations。I recommend the first part of the book the rest up to you

Madhur Bhargava

It is rare to come across an author who is really skilled at his craft and also understands his audience at the same time。 This book is crafted by one such author and is a rare gem。 The explanation and the level of details/insights provided for each topic is astounding。 This book is an eye opener for many CS concepts and should be included in every higher CS degree’s curriculum。 Highly recommended for all programmers and those who want to be one out there。

Fernando De Freitas

Decent book。 Not exceptional but has a lot of good information for anybody interested in getting into software development。

Jeff Mottishaw

This book gives a clear and concise overview of how to start applying beginning programming projects to real-world problems。 I really appreciated the author’s use of humor and multiple examples per chapter。

Sulo

Pretty Good for a beginner to have as a reference。 The dependency to C++ is a bit annoying but understandable。

Misty Madonna

This book’s fantastic。 From a beginner to an experience programmer, I believe everyone can benefit from reading it。 It hammers down some fundamentals and also describes a new way of thinking about programming concepts。 This is the best resource I’ve found for preparing for interviews and I’ve read CTCI 3x。 He explains things thoroughly and so in-depth, that it feels like he’s sitting in a room with you talking to you about it。 He’s also encouraging and that pushed it even more to the top for me。 This book’s fantastic。 From a beginner to an experience programmer, I believe everyone can benefit from reading it。 It hammers down some fundamentals and also describes a new way of thinking about programming concepts。 This is the best resource I’ve found for preparing for interviews and I’ve read CTCI 3x。 He explains things thoroughly and so in-depth, that it feels like he’s sitting in a room with you talking to you about it。 He’s also encouraging and that pushed it even more to the top for me。 He doesn’t beat you down or overly complicate the material like a lot of resources do。 It’s written like a conversation and I’m obsessed。 I’ve never written C++ but that didn’t bother me。 I don’t see why that’s a hang-up for some people but that’s ridiculous。 I’d recommend this book to anyone and everyone。 。。。more

Darin

Great information, exercises, and advice for anyone interested in programming and thinking of making a career。

Heather Gray

Absolutely brilliant! Would recommend this book to anyone starting to learn programming, and anyone who is self-taught or just wants to practice algorithmic thinking。 The way the author teaches programming in this book is unlike any other I've come across。 And it's timeless - the lessons in this book will apply even 10 years later。 Absolutely brilliant! Would recommend this book to anyone starting to learn programming, and anyone who is self-taught or just wants to practice algorithmic thinking。 The way the author teaches programming in this book is unlike any other I've come across。 And it's timeless - the lessons in this book will apply even 10 years later。 。。。more

Matt

Unfortunately, Think Like a Programmer leaves something to be desired。 This is much less a book about developing your skills as a programmer than it is a book about strategical problem-solving。 I suppose that was an oversight on my part since the title states it's an introduction to problem-solving, but I was expecting more。I wish I could say I was given a new perspective on said problem-solving, but I wasn't。 The way this book approaches problem-solution situations can be easily summed up as "b Unfortunately, Think Like a Programmer leaves something to be desired。 This is much less a book about developing your skills as a programmer than it is a book about strategical problem-solving。 I suppose that was an oversight on my part since the title states it's an introduction to problem-solving, but I was expecting more。I wish I could say I was given a new perspective on said problem-solving, but I wasn't。 The way this book approaches problem-solution situations can be easily summed up as "break larger problems into smaller, easier problems。" The book does take this approach and explain the steps that the author takes to solve various problems but in the end, it's just a very long-winded display of the one line summary。If you're the kind of person who already tackles coding challenges in your spare time (CodeFights, LeetCode, Codewars, etc。), you probably won't take much away from the book in terms of adopting new methods of problem-solving。 If you don't take part in those kinds of challenges, I highly suggest you take a peek at the sites mentioned while you read the book。All-in-all, there's absolutely information to take away if you aren't already there, but if you find yourself rounding the end of chapter two or three and don't feel like you're getting much value from what you've seen, skimming the rest of the book could still be worth your time。 It's sprinkled with little bits of information I found informative- I was just disappointed that I didn't walk away with what I was hoping for: a new perspective on solving programming challenges。 。。。more

Korra

A great book。 It really helps with developing your problem solving skills, and it appeals to a beginner and an expert programmer alike。The problems presented are solved with a step-by-step explanation and pseudocode, which makes everything a lot more understandable。 Each problem also has a C++ solution, so that you may test the code yourself。Overall a great book to learn some problem solving skills - it's never too late for that。 A great book。 It really helps with developing your problem solving skills, and it appeals to a beginner and an expert programmer alike。The problems presented are solved with a step-by-step explanation and pseudocode, which makes everything a lot more understandable。 Each problem also has a C++ solution, so that you may test the code yourself。Overall a great book to learn some problem solving skills - it's never too late for that。 。。。more

Yu-Hsien Kuo

A really well-written book for someone with a foundation algorithms and data structures。 The information is presented in a structured manner, there are plenty of examples, and clear explanations are given throughout。 Highly recommended for anyone who's acquired basic knowledge of a C-like language and would like to know more。 A really well-written book for someone with a foundation algorithms and data structures。 The information is presented in a structured manner, there are plenty of examples, and clear explanations are given throughout。 Highly recommended for anyone who's acquired basic knowledge of a C-like language and would like to know more。 。。。more

Saiko

- found some pieces of useful advice that resonated/introduced new perspectives to my current knowledge in each chapter。- All in all would recommend it to a programmer in the making。- it's an easy read。- problems are not so difficult。 - found some pieces of useful advice that resonated/introduced new perspectives to my current knowledge in each chapter。- All in all would recommend it to a programmer in the making。- it's an easy read。- problems are not so difficult。 。。。more

Christos

This is a good read for entry- to mid-level programmers。 Presents good practises and approaches to problem solving techniques with detailed examples and extra exercises to work on。

Benjamin

A perfectly fine book to flip through。Most of the headline advice here is the sort you could get from any "how to solve programming problems" book: restate the question, pay attention to the constraints, reduce the puzzle area, draw diagrams。And yet, though this is not the first book in this area that I've read -- which would seem to make it repetitive and unnecessary -- I actually found myself mostly interested in Spraul's examples and explanations。 I especially enjoyed his chapters on recursio A perfectly fine book to flip through。Most of the headline advice here is the sort you could get from any "how to solve programming problems" book: restate the question, pay attention to the constraints, reduce the puzzle area, draw diagrams。And yet, though this is not the first book in this area that I've read -- which would seem to make it repetitive and unnecessary -- I actually found myself mostly interested in Spraul's examples and explanations。 I especially enjoyed his chapters on recursion (head vs。 tail recursion, when recursion/iteration makes sense) and his final chapter, which starts with the call for self-knowledge: what are your strengths? What are your weaknesses?This book won't be for everyone; and the fact that it uses C++ and has a whole chapter on pointers is a real headscratcher。 (He even goes into why he made those choices, but it's still a headscratcher。) But if you're interested in this subject, it might be worth a skim。 。。。more

Wojtek Ogrodowczyk

Disclaimer: I dropped this book after getting through the first 15% and just browsing till the end。 I didn't like that, because of the three assumptions that the author made while writing the book and I believe all of them are false:1。 Being better in solving logical puzzles (how to cross a river with a fox, goat, and a cabbage, etc。) makes you a better programmer。 Personally, I'm pretty bad at those puzzle, but I'm a fairly successful programmer with 10 years of experience。 I don't see how gett Disclaimer: I dropped this book after getting through the first 15% and just browsing till the end。 I didn't like that, because of the three assumptions that the author made while writing the book and I believe all of them are false:1。 Being better in solving logical puzzles (how to cross a river with a fox, goat, and a cabbage, etc。) makes you a better programmer。 Personally, I'm pretty bad at those puzzle, but I'm a fairly successful programmer with 10 years of experience。 I don't see how getting better at this kind of problems relates to any programming tasks I need to do。2。 C++ is a good language for teaching the book, because it's low-level and if you can understand C++, you can understand anything。 My problem with that is that a) there are better low-level languages to use IF we want to use a low-level language for this task (for example Rust), b) using a low-level language and explaining pointers isn't the best way to introduce people to a programing mindset (which seems to be the aim of the book)。3。 The autor seems to get from "I think like that" + "I'm a programmer" to "programmers think like that"。 I don't relate to the content in the book and I think lots of other people won't。 Writing like this is the one and proper way of thinking for programmers will alienate those people (and me!)。 。。。more

Nathan Albright

It should go without saying that this book is most of benefit to someone who is a computer programmer, and especially someone who is skilled enough at C++ to do the exercises in this book。 I must admit that I am not the ideal person for this book, not having that sort of programming basis, something that the author repeatedly comments on, such as when he pokes the reader saying: "I'm not kidding about doing the exercises。 You're not just reading the chapters and moving on, are you (109)?" about It should go without saying that this book is most of benefit to someone who is a computer programmer, and especially someone who is skilled enough at C++ to do the exercises in this book。 I must admit that I am not the ideal person for this book, not having that sort of programming basis, something that the author repeatedly comments on, such as when he pokes the reader saying: "I'm not kidding about doing the exercises。 You're not just reading the chapters and moving on, are you (109)?" about halfway through the text。 No doubt there are many readers of this book like myself who did precisely that, but hopefully there are at least a few readers who can program who take this book to heart because it has a lot to say that is very worthwhile and deserves to be taken as seriously as the author intends it。 This is, in fact, the sort of work that should be a part of introductory courses on computer programming that involve teaching C++ as a companion to the work of learning the programming language itself, largely because its approach is solid when it comes to learning how to solve problems and develop the mental discipline and tools of the trade to become a skilled programmer。 If I am not such a person myself, at least I seek to appreciate a job well done when I find it [1]。The contents of this excellent and modestly sized (220 pages or so) book are organized in a thoughtful and disciplined way, as would be expected。 After some acknowledgements and an introduction, the author begins by looking at strategies for problem solving that help someone transition from being merely a coder to being a genuine programmer。 Then the author looks at pure puzzles, like sudoku, and how they are solved using various strategies that can then be applied to novel phenomena。 After this the author discusses ways to solve puzzles with arrays, and then pointers and dynamic memory, and then classes, recursion, and the smart re-use of code by others, before closing with some overall thoughts and comments on how to think like a programmer。 Each chapter closes with exercises that the author is very concerned that readers actually try out and work to solve, and the topics get progressively harder as the book goes on, to the point where someone ought to be a fairly expert programmer if he or she has taken the book seriously enough。 This is not a book to breeze through, but rather one to take seriously and gradually。So, having established that this book is most of use to someone who is learning or already at least somewhat skilled in programming in C++, what insights can someone gain from this book if they are not particularly skilled at programming。 Fortunately, many of the insights of this book are modular and applicable far outside programming。 For one, a great deal of success in life depends on being able to solve problems without getting frustrated or despondent about them。 Likewise, a great deal of problems in life are modular in fashion and easier to deal with when appropriately divided and handled in isolation and in a certain sequential order。 Also, learning how to solve some problems improves one's skill set for other problems。 The author also makes sound points on knowing one's personal patterns and tendencies and not seeking to rely on people working against them, but rather working with them in some fashion by prompting conscious thought and reflection。 There is a lot to appreciate on this book on every level, and not just as a practical guide to computer programming, but also as someone who thinks about problem solving on wider levels。[1] See, for example:https://edgeinducedcohesion。wordpress。。。https://edgeinducedcohesion。wordpress。。。https://edgeinducedcohesion。wordpress。。。https://edgeinducedcohesion。wordpress。。。https://edgeinducedcohesion。wordpress。。。 。。。more

ifknot

It's an okay book & one I certainly wish it was available to me maybe 15 years ago! Not only is it a stealth introduction to computer science it's a good primer for C/C++。 The initial style is a bit whacky and slightly lowbrow but the author seems to calm down and be more readable as the book progresses。 However, his persistent admonishments to 'do the practice' at the start of each and every 'Excercises' section jars against the overall friendly tone。 The Chapters on recursion are the best of t It's an okay book & one I certainly wish it was available to me maybe 15 years ago! Not only is it a stealth introduction to computer science it's a good primer for C/C++。 The initial style is a bit whacky and slightly lowbrow but the author seems to calm down and be more readable as the book progresses。 However, his persistent admonishments to 'do the practice' at the start of each and every 'Excercises' section jars against the overall friendly tone。 The Chapters on recursion are the best of the book along with last chapter which examines the strengths and weaknesses of us as programmers and how we program which is very helpful for developing personal insight - an oft overlooked aspect of learning to think like a programmer。 So overall? Well worth a read but with some passing comment about the new pointer RAII features of C++11/14 might help update it a bit - not that it should in any way replace the discussion about raw pointers as personally I think this is very important。 。。。more

Irina

A good read for college students with emphasis on problem solving rather that a specific language syntax。

Cynthia S Elacqua

I wish this had been one of my college textbooksMy college did a decent job of training computer majors to be problem solvers。 This book would have made an excellent companion text to instruction on data structures and algorithms。 The author recommends knowledge of or simultaneous study of C++。 I feel it would be accessible to any programmer in the C language family。 Programmers in other languages could also obtain some benefit, but understanding would be a harder climb。Sure wish my workplace ha I wish this had been one of my college textbooksMy college did a decent job of training computer majors to be problem solvers。 This book would have made an excellent companion text to instruction on data structures and algorithms。 The author recommends knowledge of or simultaneous study of C++。 I feel it would be accessible to any programmer in the C language family。 Programmers in other languages could also obtain some benefit, but understanding would be a harder climb。Sure wish my workplace had allowed the luxury of studying a language before building production applications with it。 Some of the author's recommendations in the last chapter are not always within the working programmer's control。 The difference between academia and the rest of the world。All in all, well written, good use of examples, and sensible exercises to put the concepts into practice。 。。。more

Stephanie

The best part of the book is the logic explanation to each problem presented。 When you know how to approach the solutions that certainly helps you plan your code。 It was an entertaining read for a subject that could easily be a bit dry。

Dgg32

a book should be read early in a porammer's career。 It is about some deepdown way of thinking in writing programs to solve problems and its effect on me is subtle but profound。 a book should be read early in a porammer's career。 It is about some deepdown way of thinking in writing programs to solve problems and its effect on me is subtle but profound。 。。。more

Annie

Lots of good ideas and exercises in this book。 If you're going to read it, do it right, and try everything! Lots of good ideas and exercises in this book。 If you're going to read it, do it right, and try everything! 。。。more

EC

Putting this on hold, it's a good book I just have too many other things to work on right now。 Putting this on hold, it's a good book I just have too many other things to work on right now。 。。。more